<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    


    <script>
        // var a = 2;
        // function fn(){
        //     console.log(a);
        // }
        // fn()
        // console.log(a);

        // var a = 3;
        // function fn(a){
        //     console.log(a);  // 4
        //    var a = 6   //局部变量，具有局部作用域
          
        // }
        // fn(4)
        // console.log(a) 

        // // 预解析
        // // 全局变量
        // a : undefined;  -->3
        // fn : function(){};
        // // 局部变量
        // a :4
        // a:undefined;
        // // 逐行解析
        // var a = 3;   //赋值a = 3
        // function fn(a){  //  局部 a =4
        //     console.log(a);  // 4
        //    var a = 6   //局部变量，具有局部作用域
          
        // }
        // fn(4)
        // console.log(a) 


//         var a = 1;
// function test(a) {
//     alert(a);
//     var a = 2;
//     alert(a);
// }
// test(2);

// 声明提升，把var 声明和function 声明提升到作用域顶部
//  var a ;
//  function test(a){
//      var a;
//      console.log(a);
//      a = 2;
//     console.log(a);
//  }
//  test(2);



//  alert(typeof fn);
// var fn = 10;
// function fn() {}
// alert(typeof fn);

// var fn ;
// function fn(){}  //函数与变量重名，只留下function
// alert(typeof fn);  //function
// fn = 10;         //赋值  10
// alert(typeof fn)  //number

// 预解析
// 全局变量
// 先找var 、undefined 先把变量储存起来，初始值为undefined
// fn :undefined;
// fn : function  fn(){} //当function()和var 重名，function优先 
// // 再找局部变量
// // 在逐行解析
// alert(typeof fn);   //function
// var fn = 10;     // 赋值10
// function fn() {}
// alert(typeof fn);    //10为数字类型

// 作用域链
// function compare(value1,value2){
//     if(value1 < value2){
//         return -1;
//     } else if( value1 > value2 ) {
//         return 1;
//     } else {
//         return 0;
//     }
// }
// var result = compare(5, 10);

// // EC  执行上下文
// global_EC = {  //全局执行上下文
//     VO: {
//         compare :function compare(){}
//         result :undefined 
//     }
//     ScopeChain:[global_EC.VO];
//     this :window
//  }
//  test_EC ={
//     A0 :{
//         value1 :5,
//         value2: 10,
//     }
//     ScopeChain :[test_EC.A0,global_EC.VO]
//     arguments: [length:2,0:5,l:10]
//     this:window
//  }
//  然后执行上下文


function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
    return 0;
  }
}
var result = compare(5, 10);
console.log(result)
    </script>
</body>
</html>